import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const request = axios.create({
  baseURL: '/api',
  timeout: 10000
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.token = token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data
    if (res.code === 1 || res.code === 0 || res.code === 200) {
      return res
    }
    
    ElMessage.error(res.msg || '请求失败')
    return Promise.reject(new Error(res.msg || '请求失败'))
  },
  error => {
    const msg = error.response?.data?.msg || error.message || '网络请求失败'
    ElMessage.error(msg)
    
    if (error.response?.status === 401) {
      localStorage.removeItem('token')
      location.href = '/login'
    }
    
    return Promise.reject(error)
  }
)

/**
 * 套餐模块API
 */
export default {
  /**
   * 修改套餐
   * @param {Object} data 套餐信息
   */
  updateSetmeal(data) {
    return request({
      url: '/admin/setmeal',
      method: 'put',
      data
    })
  },

  /**
   * 分页查询套餐
   * @param {Object} params 查询参数
   * @param {number} [params.categoryId] 分类id，可选
   * @param {string} [params.name] 套餐名称，可选
   * @param {number} params.page 页码
   * @param {number} params.pageSize 每页记录数
   * @param {number} [params.status] 套餐状态，可选
   */
  getSetmealPage(params) {
    return request({
      url: '/admin/setmeal/page',
      method: 'get',
      params
    })
  },

  /**
   * 套餐起售、停售
   * @param {number} id 套餐id
   * @param {number} status 状态，1为起售，0为停售
   */
  updateStatus(id, status) {
    return request({
      url: `/admin/setmeal/status/${status}`,
      method: 'post',
      params: { id }
    })
  },

  /**
   * 批量删除套餐
   * @param {Array} ids 套餐id数组
   */
  deleteSetmeal(ids) {
    return request({
      url: '/admin/setmeal',
      method: 'delete',
      params: { ids: ids.join(',') }
    })
  },

  /**
   * 新增套餐
   * @param {Object} data 套餐信息
   */
  addSetmeal(data) {
    return request({
      url: '/admin/setmeal',
      method: 'post',
      data
    })
  },

  /**
   * 根据id查询套餐
   * @param {number} id 套餐id
   */
  getSetmealById(id) {
    return request({
      url: `/admin/setmeal/${id}`,
      method: 'get'
    })
  }
} 